package com.java.simple.study.jvm.memstruct.methodarea;

/**
 * @author zhoujunlin
 * @date 2022年07月14日 22:11
 * @desc
 */
public class StaticObjTest {

    static class Test {
        /**
         * 静态属性staticObj
         * 对象都存于队中  变量位置有所不同
         * jdk6 此变量随着Test类信息存于方法区
         * jdk7,jdk8均存于堆中
         */
        static ObjectHolder staticObj = new ObjectHolder();
        /**
         * 成员属性instanceObj
         * 存于堆中
         */
        ObjectHolder instanceObj = new ObjectHolder();

        void foo() {
            /**
             * 局部属性localObj
             * 存于当前方法栈帧的局部变量表中
             */
            ObjectHolder localObj = new ObjectHolder();
            System.out.println("done");
        }
    }

    private static class ObjectHolder {

    }

    public static void main(String[] args) {
        Test test = new Test();
        test.foo();
    }

}
